package com.aheizi.oa.util;

import com.aheizi.oa.domain.User;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;


public class CheckPrivilegeInerceptor extends AbstractInterceptor {

	public String intercept(ActionInvocation invocation) throws Exception {
//		System.out.println("之前");
//		String invoke = invocation.invoke();
//		System.out.println("之后");
//		return invoke;

		
		//获取信息
		User user = (User) ActionContext.getContext().getSession().get("user");
		String nameSpace = invocation.getProxy().getNamespace();
		String actionName = invocation.getProxy().getActionName();
		String privUrl = nameSpace + actionName;
		
		//如果未登录就转到登陆页面
		if(user == null){
			if(privUrl.startsWith("/user_login")){//"user_loginUI" "user_login"
				//如果是登陆就放行
				return invocation.invoke();
			}else{
				//不是登陆就转到登陆页面
				return "loginUI";
			}
		}
		//如果已经登陆就转到提示页面
		else{
			//如果有权限就放行
			if(user.hasPrivilegeByUrl(privUrl)){
				return invocation.invoke();
			}
			//如果没有权限就,就转到提示页面
			else{
				return "noPrivilegeError";
			}
		}
	}
}
